    // 4. for 循环中的 let 声明
    for (var i = 0; i < 5; i++) {
        // 循环逻辑
    }
    console.log(i) // 5

    for (var i = 0; i < 5; i++) {
        // 循环逻辑
    }
    console.log(i)  // ReferenceError: i 没有定义

    // 在使用 var 的时候，最常见的问题就是对迭代变量的奇特声明和修改：
    for (var i = 0; i < 5; i++) {
        setTimeout(() => console.log(i))
    }
    // 你可能以为会输出 0、1、2、3、4
    // 实际上会输出 5、5、5、5、5 

    // 使用 let 解决
    for (let i = 0; i < 5; i++) {
        setTimeout(() => console.log(i))
    }
    // 0、1、2、3、4

    // 3.3.3 

    let message; // undefined
    console.log(typeof message)
    console.log(typeof age) // 未声明的变量使用 typeof 返回 undefined

    // 模板字面量标签函数
    let a = 6
    let b = 9
    
    function simpleTag(string, aValExpression, bValExpression, sumExpression) {
        console.log(string)
        console.log(aValExpression)
        console.log(bValExpression)
        console.log(sumExpression)
        return 'foobar'
    }

    let untaggedResult = `${ a } + ${ b } = ${ a + b }`
    let taggedResult = simpleTag`${a} + ${b} = ${a + b}`

    console.log(untaggedResult); // "6 + 9 = 15"
    console.log(taggedResult); // "foobar" 
